﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;
namespace ECOSYSTEMPRESENTACION
{
    public partial class frmMarca : Form
    {
        public frmMarca()
        {
            InitializeComponent();
        }
        Marca laMarca = new Marca();
        MarcaBL laMarcaBL = new MarcaBL();
        private Marca ObjetoMarca()
        {
            laMarca.Nombre = txtNombreMarca.Text;
            if (txtDescripcionMarca.Text == "")
            {
                laMarca.Descripcion = "SIN DESCRIPCION";
            }
            else
            {
                laMarca.Descripcion = txtDescripcionMarca.Text;
            }
            return laMarca;
        }
        private Boolean guardarMarca()
        {
            Marca laMarca = ObjetoMarca();
            laMarcaBL.guardarMarca(laMarca);
            return true;
        }
        private Marca ObjetoActualizar()
        {
            laMarca.MarcaID = Convert.ToInt32(lblCodigo.Text);
            laMarca.Nombre = txtNombreMarca.Text;
            if (txtDescripcionMarca.Text == "")
            {
                laMarca.Descripcion = "SIN DESCRIPCION";
            }
            else
            {
                laMarca.Descripcion = txtDescripcionMarca.Text;
            }
            return laMarca;
        }
        private Boolean ActualizarMarca()
        {
            Marca laMarca = ObjetoActualizar();
            laMarcaBL.ActualizarMarca(laMarca);
            return true;
        }
        private void ObtenerListaMarca()
        {
            if (dgvListaMarcas.DataSource == null)
            {
                dgvListaMarcas.DataSource = laMarcaBL.ObtenerMarca();
            }
        }
        private void AplicarFiltro()
        {
            int ret = Filtrar_dgvListaMarcas("Marca", txtMarcaNombreBuscar.Text.Trim(), filtrador, dgvListaMarcas);
            if (ret == 0)
            {
                txtMarcaNombreBuscar.BackColor = Color.Red;
            }
            else
            {
                txtMarcaNombreBuscar.BackColor = Color.White;
            }
        }
        private int Filtrar_dgvListaMarcas(String columna, String texto, BindingSource filtro, DataGridView data)
        {
            if (filtrador.DataSource == null) return 0;
            try
            {
                String fil = String.Empty;
                fil = "LIKE '" + texto.Trim() + "%'";
                if (fil != String.Empty)
                {
                    fil = "[" + columna + "]" + fil;
                }
                filtro.Filter = fil;
                data.DataSource = filtro.DataSource;
                return filtro.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        private void rbNuevoMarca_CheckedChanged(object sender, EventArgs e)
        {
            if (rbNuevoMarca.Checked == true)
            {
                dgvListaMarcas.ReadOnly = true;
                dgvListaMarcas.ClearSelection();
                groupBox3.Enabled = true;
                btnRegistrarMarca.Enabled = true;
                LimpiarCampos();
                txtNombreMarca.Select();
            }
            else
            {
                groupBox3.Enabled = false;
                btnRegistrarMarca.Enabled = false;
            }
        }
        private void LimpiarCampos()
        {
            txtNombreMarca.Text = "";
            txtDescripcionMarca.Text = "";
            lblCodigo.Text = "";
            txtMarcaNombreBuscar.Text = "";
            txtNombreMarca.Select();
        }

        private void rbActulizarMarca_CheckedChanged(object sender, EventArgs e)
        {
            if (rbActulizarMarca.Checked == true)
            {
                filtrador.DataSource = laMarcaBL.ObtenerMarca();
                LimpiarCampos();
                groupBox2.Enabled = true;
                btnActualizarMarca.Enabled = true;
                txtMarcaNombreBuscar.Select();
                ObtenerListaMarca();
            }
            else
            {
                groupBox2.Enabled = false;
                btnActualizarMarca.Enabled = false;
            }
        }

        private void txtMarcaNombreBuscar_TextChanged(object sender, EventArgs e)
        {
            AplicarFiltro();
        }

        private void frmMarca_Load(object sender, EventArgs e)
        {
            rbNuevoMarca.Checked = true;
        }

        private void dgvListaMarcas_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                int nrofila = Int32.Parse(e.RowIndex.ToString());
                groupBox3.Enabled = true;
                txtNombreMarca.Text = Convert.ToString(dgvListaMarcas["Marca", nrofila].Value);
                txtDescripcionMarca.Text = Convert.ToString(dgvListaMarcas["Descripcion", nrofila].Value);
                lblCodigo.Text = Convert.ToString(dgvListaMarcas["Codigo", nrofila].Value);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnRegistrarMarca_Click(object sender, EventArgs e)
        {
            try
            {
                guardarMarca();
                MessageBox.Show("Marca " + txtNombreMarca.Text + " Registrada Correctamente");
                LimpiarCampos();                
            }
            catch (SqlException ex) { MessageBox.Show(ex.Message); }
            catch (Exception exc) { MessageBox.Show(exc.Message); }
        }

        private void btnActualizarMarca_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarMarca();
                MessageBox.Show("Marca " + txtNombreMarca.Text + " Actualizado Correctamente");
                LimpiarCampos();
                rbActulizarMarca.Checked = false;
                rbNuevoMarca.Checked = true;
                dgvListaMarcas.DataSource = null;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }


       
    }
}
